#ifndef GLWIDGET_H
#define GLWIDGET_H

#include "dibujo3d.h"
#include "camara.h"
#include "escena.h"
#include "visor3d_global.h"
#include "herramienta3d.h"
#include <QGLWidget>

class VISOR3D_EXPORT Visor3d : public QGLWidget
{
    Q_OBJECT

public:
    Visor3d(QWidget *parent = 0);
    ~Visor3d();

    QSize minimumSizeHint() const;
    QSize sizeHint() const;

    void dibujarEjes();

    void setEscena(Escena* escena) { this->escena = escena; }

    void setHerramienta(Herramienta3d* herramienta) { this->herramienta = herramienta; }

    Camara* getCamara() { return &camara; }

    void establecerVision2d(double x, double y, double ancho, double alto, bool origenArriba = false);

    void actualizar();

protected:
    void initializeGL();
    void paintGL();
    void resizeGL(int width, int height);
    void mousePressEvent(QMouseEvent* evento);
    void mouseReleaseEvent(QMouseEvent* evento);
    void mouseMoveEvent(QMouseEvent* evento);
    void wheelEvent(QWheelEvent* evento);
    void timerEvent(QTimerEvent *evento);

private:
    Camara camara;
    Escena* escena;
    Herramienta3d* herramienta;

    bool desactualizado;
};


#endif
